package com.smart.community.commons.constants;

/**
 * 用户相关常量
 * @author Wu.Liang
 * @since 2024-12-19
 * @version 1.0.0
 */
public class UserConstants {
    
    // ==================== 用户状态 ====================
    
    /**
     * 用户状态：正常
     */
    public static final String USER_STATUS_NORMAL = "NORMAL";
    
    /**
     * 用户状态：禁用
     */
    public static final String USER_STATUS_DISABLED = "DISABLED";
    
    /**
     * 用户状态：锁定
     */
    public static final String USER_STATUS_LOCKED = "LOCKED";
    
    /**
     * 用户状态：待激活
     */
    public static final String USER_STATUS_PENDING = "PENDING";
    
    /**
     * 用户状态：已删除
     */
    public static final String USER_STATUS_DELETED = "DELETED";
    
    // ==================== 用户类型 ====================
    
    /**
     * 用户类型：超级管理员
     */
    public static final String USER_TYPE_SUPER_ADMIN = "SUPER_ADMIN";
    
    /**
     * 用户类型：系统管理员
     */
    public static final String USER_TYPE_SYSTEM_ADMIN = "SYSTEM_ADMIN";
    
    /**
     * 用户类型：公司管理员
     */
    public static final String USER_TYPE_COMPANY_ADMIN = "COMPANY_ADMIN";
    
    /**
     * 用户类型：社区管理员
     */
    public static final String USER_TYPE_COMMUNITY_ADMIN = "COMMUNITY_ADMIN";
    
    /**
     * 用户类型：物业管理员
     */
    public static final String USER_TYPE_PROPERTY_ADMIN = "PROPERTY_ADMIN";
    
    /**
     * 用户类型：楼栋管理员
     */
    public static final String USER_TYPE_BUILDING_ADMIN = "BUILDING_ADMIN";
    
    /**
     * 用户类型：单元管理员
     */
    public static final String USER_TYPE_UNIT_ADMIN = "UNIT_ADMIN";
    
    /**
     * 用户类型：普通用户
     */
    public static final String USER_TYPE_NORMAL = "NORMAL";
    
    // ==================== 用户角色 ====================
    
    /**
     * 用户角色：超级管理员
     */
    public static final String USER_ROLE_SUPER_ADMIN = "SUPER_ADMIN";
    
    /**
     * 用户角色：系统管理员
     */
    public static final String USER_ROLE_SYSTEM_ADMIN = "SYSTEM_ADMIN";
    
    /**
     * 用户角色：公司管理员
     */
    public static final String USER_ROLE_COMPANY_ADMIN = "COMPANY_ADMIN";
    
    /**
     * 用户角色：社区管理员
     */
    public static final String USER_ROLE_COMMUNITY_ADMIN = "COMMUNITY_ADMIN";
    
    /**
     * 用户角色：物业管理员
     */
    public static final String USER_ROLE_PROPERTY_ADMIN = "PROPERTY_ADMIN";
    
    /**
     * 用户角色：楼栋管理员
     */
    public static final String USER_ROLE_BUILDING_ADMIN = "BUILDING_ADMIN";
    
    /**
     * 用户角色：单元管理员
     */
    public static final String USER_ROLE_UNIT_ADMIN = "UNIT_ADMIN";
    
    /**
     * 用户角色：普通用户
     */
    public static final String USER_ROLE_NORMAL = "NORMAL";
    
    // ==================== 性别 ====================
    
    /**
     * 性别：男
     */
    public static final String GENDER_MALE = "MALE";
    
    /**
     * 性别：女
     */
    public static final String GENDER_FEMALE = "FEMALE";
    
    /**
     * 性别：未知
     */
    public static final String GENDER_UNKNOWN = "UNKNOWN";
    
    // ==================== 认证状态 ====================
    
    /**
     * 认证状态：未认证
     */
    public static final String AUTH_STATUS_UNAUTHENTICATED = "UNAUTHENTICATED";
    
    /**
     * 认证状态：已认证
     */
    public static final String AUTH_STATUS_AUTHENTICATED = "AUTHENTICATED";
    
    /**
     * 认证状态：认证中
     */
    public static final String AUTH_STATUS_AUTHENTICATING = "AUTHENTICATING";
    
    /**
     * 认证状态：认证失败
     */
    public static final String AUTH_STATUS_AUTHENTICATION_FAILED = "AUTHENTICATION_FAILED";
    
    // ==================== 登录状态 ====================
    
    /**
     * 登录状态：在线
     */
    public static final String LOGIN_STATUS_ONLINE = "ONLINE";
    
    /**
     * 登录状态：离线
     */
    public static final String LOGIN_STATUS_OFFLINE = "OFFLINE";
    
    /**
     * 登录状态：忙碌
     */
    public static final String LOGIN_STATUS_BUSY = "BUSY";
    
    /**
     * 登录状态：离开
     */
    public static final String LOGIN_STATUS_AWAY = "AWAY";
    
    // ==================== 默认值 ====================
    
    /**
     * 默认密码
     */
    public static final String DEFAULT_PASSWORD = "123456";
    
    /**
     * 默认头像
     */
    public static final String DEFAULT_AVATAR = "/static/images/default-avatar.png";
    
    /**
     * 默认昵称前缀
     */
    public static final String DEFAULT_NICKNAME_PREFIX = "用户";
    
    /**
     * 最大登录失败次数
     */
    public static final int MAX_LOGIN_FAIL_COUNT = 5;
    
    /**
     * 账号锁定时间（分钟）
     */
    public static final int ACCOUNT_LOCK_TIME = 30;
    
    /**
     * 密码最小长度
     */
    public static final int PASSWORD_MIN_LENGTH = 6;
    
    /**
     * 密码最大长度
     */
    public static final int PASSWORD_MAX_LENGTH = 20;
    
    /**
     * 用户名最小长度
     */
    public static final int USERNAME_MIN_LENGTH = 3;
    
    /**
     * 用户名最大长度
     */
    public static final int USERNAME_MAX_LENGTH = 20;
    
    /**
     * 昵称最大长度
     */
    public static final int NICKNAME_MAX_LENGTH = 50;
    
    /**
     * 邮箱最大长度
     */
    public static final int EMAIL_MAX_LENGTH = 100;
    
    /**
     * 手机号最大长度
     */
    public static final int PHONE_MAX_LENGTH = 20;
    
    // ==================== 缓存键 ====================
    
    /**
     * 用户信息缓存键前缀
     */
    public static final String USER_INFO_CACHE_PREFIX = "user:info:";
    
    /**
     * 用户权限缓存键前缀
     */
    public static final String USER_PERMISSION_CACHE_PREFIX = "user:permission:";
    
    /**
     * 用户会话缓存键前缀
     */
    public static final String USER_SESSION_CACHE_PREFIX = "user:session:";
    
    /**
     * 用户在线状态缓存键前缀
     */
    public static final String USER_ONLINE_CACHE_PREFIX = "user:online:";
    
    // ==================== 消息常量 ====================
    
    /**
     * 用户不存在
     */
    public static final String MSG_USER_NOT_EXIST = "用户不存在";
    
    /**
     * 用户名已存在
     */
    public static final String MSG_USERNAME_EXISTS = "用户名已存在";
    
    /**
     * 邮箱已存在
     */
    public static final String MSG_EMAIL_EXISTS = "邮箱已存在";
    
    /**
     * 手机号已存在
     */
    public static final String MSG_PHONE_EXISTS = "手机号已存在";
    
    /**
     * 密码错误
     */
    public static final String MSG_PASSWORD_ERROR = "密码错误";
    
    /**
     * 账号被锁定
     */
    public static final String MSG_ACCOUNT_LOCKED = "账号已被锁定";
    
    /**
     * 账号被禁用
     */
    public static final String MSG_ACCOUNT_DISABLED = "账号已被禁用";
    
    /**
     * 登录成功
     */
    public static final String MSG_LOGIN_SUCCESS = "登录成功";
    
    /**
     * 登录失败
     */
    public static final String MSG_LOGIN_FAILED = "登录失败";
    
    /**
     * 注册成功
     */
    public static final String MSG_REGISTER_SUCCESS = "注册成功";
    
    /**
     * 注册失败
     */
    public static final String MSG_REGISTER_FAILED = "注册失败";
    
    /**
     * 修改密码成功
     */
    public static final String MSG_CHANGE_PASSWORD_SUCCESS = "修改密码成功";
    
    /**
     * 修改密码失败
     */
    public static final String MSG_CHANGE_PASSWORD_FAILED = "修改密码失败";
    
    /**
     * 重置密码成功
     */
    public static final String MSG_RESET_PASSWORD_SUCCESS = "重置密码成功";
    
    /**
     * 重置密码失败
     */
    public static final String MSG_RESET_PASSWORD_FAILED = "重置密码失败";
    
    /**
     * 私有构造函数，防止实例化
     */
    private UserConstants() {
        throw new UnsupportedOperationException("常量类不能实例化");
    }
} 